package br.com.plurianual.model.entity;

import java.io.Serializable;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;



@NamedQueries({
	@NamedQuery(name = "deletePrograma.clearIndicador", query = "update Indicador a set a.programa = null where a.programa = :programa"),
	@NamedQuery(name = "deletePrograma.clearAcao", query = "update Acao a set a.programa = null where a.programa = :programa"),
})
/**
 * The persistent class for the tcons_orgao database table.
 * 
 */
@Entity
@Table(name="programa")
public class Programa extends BaseEntity implements Serializable {

	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
	@Column(name="idPrograma", unique=true, nullable=false)
	private Integer id;
	
	@Column(name="codigoPrograma")
	private String codigo;
	
	@Column(name="objetivo")
	private String objetivo;
	
	@Column(name="denominacao")
	private String denominacao;

	@Column(name="publicoAlvo")
	private String publicoAlvo;

	@Column(name="naturezaPrograma")
	private Integer natureza;

	@Column(name="inicioPrevisto")
	private String inicioPrevisto;
	
	@Column(name="finalPrevisto")
	private String finalPrevisto;
	
	@Column(name="gestorPrograma")
	private String gestor;
	
	@Column(name="multisetorial")
	private Integer multisetorial;
	
	@JoinColumn(name="idOrgao")
	@ManyToOne(cascade = CascadeType.DETACH)
	private Orgao orgao;
	
	@JoinColumn(name="idMacroObjetivo")
	@ManyToOne(cascade = CascadeType.DETACH)
	private MacroObjetivo macroObjetivo;

	/**
	 * @return the id
	 */
	public Integer getId() {
		return id;
	}

	/**
	 * @param id the id to set
	 */
	public void setId(Integer id) {
		this.id = id;
	}

	/**
	 * @return the codigo
	 */
	public String getCodigo() {
		return codigo;
	}

	/**
	 * @param codigo the codigo to set
	 */
	public void setCodigo(String codigo) {
		this.codigo = codigo;
	}

	/**
	 * @return the objetivo
	 */
	public String getObjetivo() {
		return objetivo;
	}

	/**
	 * @param objetivo the objetivo to set
	 */
	public void setObjetivo(String objetivo) {
		this.objetivo = objetivo;
	}

	/**
	 * @return the denominacao
	 */
	public String getDenominacao() {
		return denominacao;
	}

	/**
	 * @param denominacao the denominacao to set
	 */
	public void setDenominacao(String denominacao) {
		this.denominacao = denominacao;
	}

	/**
	 * @return the publicoAlvo
	 */
	public String getPublicoAlvo() {
		return publicoAlvo;
	}

	/**
	 * @param publicoAlvo the publicoAlvo to set
	 */
	public void setPublicoAlvo(String publicoAlvo) {
		this.publicoAlvo = publicoAlvo;
	}

	/**
	 * @return the inicioPrevisto
	 */
	public String getInicioPrevisto() {
		return inicioPrevisto;
	}

	/**
	 * @param inicioPrevisto the inicioPrevisto to set
	 */
	public void setInicioPrevisto(String inicioPrevisto) {
		this.inicioPrevisto = inicioPrevisto;
	}

	/**
	 * @return the finalPrevisto
	 */
	public String getFinalPrevisto() {
		return finalPrevisto;
	}

	/**
	 * @param finalPrevisto the finalPrevisto to set
	 */
	public void setFinalPrevisto(String finalPrevisto) {
		this.finalPrevisto = finalPrevisto;
	}

	/**
	 * @return the gestor
	 */
	public String getGestor() {
		return gestor;
	}

	/**
	 * @param gestor the gestor to set
	 */
	public void setGestor(String gestor) {
		this.gestor = gestor;
	}

	/**
	 * @return the orgao
	 */
	public Orgao getOrgao() {
		return orgao;
	}

	/**
	 * @param orgao the orgao to set
	 */
	public void setOrgao(Orgao orgao) {
		this.orgao = orgao;
	}

	/**
	 * @return the macroObjetivo
	 */
	public MacroObjetivo getMacroObjetivo() {
		return macroObjetivo;
	}

	/**
	 * @param macroObjetivo the macroObjetivo to set
	 */
	public void setMacroObjetivo(MacroObjetivo macroObjetivo) {
		this.macroObjetivo = macroObjetivo;
	}

	/**
	 * @param natureza the natureza to set
	 */
	public void setNatureza(Integer natureza) {
		this.natureza = natureza;
	}

	/**
	 * @param multisetorial the multisetorial to set
	 */
	public void setMultisetorial(Integer multisetorial) {
		this.multisetorial = multisetorial;
	}

	/**
	 * @return the natureza
	 */
	public Integer getNatureza() {
		return natureza;
	}

	/**
	 * @return the multisetorial
	 */
	public Integer getMultisetorial() {
		return multisetorial;
	}

}
